In a peer-to-peer (P2P) network, a data package often is divided into slices and each connection between peers is responsible for delivering a part of the data package (e.g., one or more of the slices). In general, this approach provides an effective, fast delivery of the entire data package to a requesting peer. However, a problem may occur when one or more slices are not available. For example, a particular slice of the data package may not have been propagated to as many peers as other slices (i.e., have a low distribution). Additionally, the peer on which the original data package was published may not be available to provide the complete data package.
As a result, the requesting peer may need to wait an extended period of time for the slice to become available, e.g., when a peer completes other transmission(s), reconnects, and/or the like. To this extent, it is not uncommon for a requesting peer in a P2P network to fail to receive a small portion of a data package. In this case, the request for the data package may time out or the user may give up on receiving the data package, which results in the request for the data package failing. Such a failure decreases a user's satisfaction using the P2P network, and can increase network traffic due to a retry or the like.
In other types of data sharing environments, such as a Usenet Reader, a user also can publish a set of parity recovery files with a set of archived segment files. In this case, another user can request each of the set of archived segment files and parity recovery files for download. Should the download of an archived segment file fail or be corrupted, one or more parity recovery files can be used to recreate the content. However, this is limited in that the requesting user must request each individual file (archived segment or parity recovery) for download.
In view of the foregoing, a need exists to overcome one or more of the deficiencies in the related art.